/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package GestionSecretario;

import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JOptionPane;
import gestionJDBC.*;
import java.util.ArrayList;


/**
 *
 * @author Crisanto
 */
public class SecretarioDB {
    private static gestorJDBC gestor = gestorJDBC.getInstance();
    
    public SecretarioDB(){};
    
       public int crearSecretario(int dni, int tel, String nom,
                        String ap1, String ap2, String ce,
                        String fn, String dom, String loc,
                        int cp, String prov){
	
       int id = -1;
       ResultSet rs;
       boolean valido;
       
       gestor.Conectar();
             
        valido = gestor.Insertar("INSERT INTO Secretario (DNI, telefono, nombre, apellido1, apellido2, "
                                            + "email, fe_nac, domicilio, localidad, cp, provincia, alta) "
                                            + "VALUES ('"+ dni + "','" + tel + "','" + nom + "','" + ap1 + "','" + ap2 
                                            + "','" + ce + "','" + fn + "','" + dom + "','" + loc +
                                            "','" + cp + "','" + prov + "',1)");
   
        
        rs=gestor.Consultar("SELECT max(Secretario.id_secretario) AS max_id FROM Secretario");
        try {            
            rs.next();
            id=(Integer) rs.getObject("max_id");
               
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(null, "No se puede obtener el numero de secretarios registrados\n"+e.getMessage());
        }
         
        gestor.Desconectar();

	return id;
    }
    
    public ArrayList<Secretario> buscaSecretario(String nombre, String apellido1, String apellido2){
        ArrayList<Secretario> secretarios = new ArrayList<Secretario>();
        
        gestor.Conectar();
	ResultSet rs = null;
        
        rs = gestor.Consultar("SELECT * FROM Secretario WHERE nombre = '"+ nombre + "' and "
                                    + "apellido1 = '"+ apellido1 +"' and apellido2 = '"
                                    + apellido2 +"' and alta = 1");
        
	int i = 0; 
        try{
            while(rs.next()){
                
                secretarios.add(new Secretario());
                secretarios.get(i).SetIdSecretario((Integer) rs.getObject("id_secretario"));
                secretarios.get(i).SetDNI(rs.getObject("DNI").toString());
                secretarios.get(i).SetTelefono((Integer) rs.getObject("telefono"));
                secretarios.get(i).SetNombre(rs.getObject("nombre").toString());
                secretarios.get(i).SetApellido1(rs.getObject("apellido1").toString());
                secretarios.get(i).SetApellido2(rs.getObject("apellido2").toString());
                secretarios.get(i).SetCorreoElectronico(rs.getObject("email").toString());
                secretarios.get(i).SetFechaNacimiento(rs.getObject("fe_nac").toString());
                secretarios.get(i).SetDomicilio(rs.getObject("domicilio").toString());
                secretarios.get(i).SetLocalidad(rs.getObject("localidad").toString());
                secretarios.get(i).SetCodigoPostal((Integer) rs.getObject("cp"));
                secretarios.get(i).SetProvincia(rs.getObject("provincia").toString());
 
                i++;
            }
        }catch(SQLException e ){
            JOptionPane.showMessageDialog(null,"Error al obtener la lista de secretarios\n"
							+ e.getMessage());
	}
        
        gestor.Desconectar();
                
        return secretarios;
    }
    
    public Secretario getSecretario(int id){
        Secretario secretario = new Secretario();
        
        gestor.Conectar();
        ResultSet rs = gestor.Consultar("SELECT * FROM Secretario WHERE id_secretario='" + id
						+ "' and alta='1'");
        
        try{                
                secretario.SetIdSecretario((Integer) rs.getObject("id_secretario"));
                secretario.SetDNI( rs.getObject("DNI").toString());
                secretario.SetTelefono((Integer) rs.getObject("telefono"));
                secretario.SetNombre(rs.getObject("nombre").toString());
                secretario.SetApellido1(rs.getObject("apellido1").toString());
                secretario.SetApellido2(rs.getObject("apellido2").toString());
                secretario.SetCorreoElectronico(rs.getObject("email").toString());
                secretario.SetFechaNacimiento(rs.getObject("fe_nac").toString());
                secretario.SetDomicilio(rs.getObject("domicilio").toString());
                secretario.SetLocalidad(rs.getObject("localidad").toString());
                secretario.SetCodigoPostal((Integer) rs.getObject("cp"));
                secretario.SetProvincia(rs.getObject("provincia").toString());
        }catch(SQLException e ){
            JOptionPane.showMessageDialog(null,"Error al obtener secretario\n"
							+ e.getMessage());
	}
        
        gestor.Desconectar();
                
        return secretario;
    }
        
    public Boolean BajaSecretario(Integer id) {

	gestor.Conectar();
        
	boolean valido = gestor.Modificar("UPDATE Secretario SET alta=0 WHERE id_secretario='" + id + "'");
	gestor.Desconectar();
	
        return valido;
    }
        
    public boolean modificaSecretario(int id, int dni, int tel, String nom,
                        String ap1, String ap2, String ce,
                        String fn, String dom, String loc,
                        int cp, String prov){
	
        gestor.Conectar();
        
	Boolean valido = gestor.Modificar("UPDATE Secretario SET nombre='" + nom + "', DNI='" + dni + "', telefono='" + tel 
                                            + "',apellido1 ='" + ap1 + "', apellido2='" + ap2 + "', email='" + ce 
                                            + "', fe_nac='" + fn + "', domicilio='" + dom + "', localidad='" + loc 
                                            + "', cp='" + cp + "', provincia='" + prov + "'  WHERE id_secretario='" + id + "'");
	

	gestor.Desconectar();
	return valido;
    }
}
